// 用户管理
// export 暴露出来 store中的state必须要暴露出去，state表单存放数据对象（state属性名是固定的）
export const state = () => {
  // 自定义一个对象存放用户信息
  return {
    userInfo: {
      token: "",
      user: {}
    }
  }
}
//2. mutations 是用于同步修改state的数据 
export const mutations = {
  // setUserInfo 是用来修改state.userInfo的值，函数名可修改
  // 保存用户信息到state 第一个参数必须是state 从第二个参数开始，才是调用该函数时候传入的参数
  setUserInfo(state, data) {
    // 将传回来的数据赋值给state下的对象
    state.userInfo = data;
  }
}
// 异步修改state的值，组件的方法共享方法
export const actions = {
  // 封装登录方法
  //   actions 第一个参数是store 是必须的
  login(store, data) {
    return this.$axios({
      url: '/accounts/login',
      method: 'post',
      data,
    }).then(res => {
      store.commit("setUserInfo", res.data);
    })
    // 错误后面统一处理

  },
  register(store, data) {
    return this.$axios({
      url: `/accounts/register`,
      method: "POST",
      data
    }).then(res => {
      // 注册完之后立即登录
      store.commit("setUserInfo", res.data);
    });
  },
  sendCaptcha(store, tel) {
    return this.$axios({
      url: `/captchas`,
      method: "POST",
      data: {
        tel
      }
    }).then(res => {
      const {code} = res.data;
      return code;
    });
  }
}
